1. Field of the Invention
The present invention relates to the field of database applications and, more specifically, to synchronizing data stored at a back end database and a front end client application.
2. Description of the Prior Art
In conventional database applications such as, for example, web services or business intelligence systems, one or more front end client applications typically function in connection with a back end database. The database generally enables entry, storage, retrieval, and manipulation of underlying data, while clients generally perform operations such as, for example, implementing business logic or caching data. The data stored at the database is constantly being changed, and, therefore, it is desirable for each client to determine when such changes are made so that they will not perform operations on out of date data, especially in the circumstance where the client caches data from the database and performs operations on the cached data.
There is no effective guideline for determining when such changes will occur. Rates of change of data generally vary at different times of day and often do not remain constant over long periods of time. Furthermore, rates of change of data corresponding to different entities are also likely to vary, and each client may perform operations on a wide range of data entities.
The clients typically determine if data in the database has been updated by periodically re-querying the database. However, because the clients cannot anticipate when updates will occur, such re-querying is often performed either too frequently or not frequently enough. If re-querying is performed too frequently, then an unnecessary expense is incurred, while, if re-querying is not performed frequently enough, then the client will perform operations on out of date data in the cache.
Thus, there is a need in the art for systems and methods for effectively notifying clients of changes to underlying data in a a database so that clients can update their caches with the changed data. It is desired that a client receive notification only when data relevant to operations performed at the particular client is changed.